package com.chixing.day10_hashcode_exception;

/*
String:字符串常量，字符串内容不可变 底层是final类型的char[] value
使用于字符串内容不经常发生改变
* 字符串内容经常发生改变，String在内存中有大量临时的String对象 占用空间，导致效率很低


（string是字符串常量，底层是一个final类型的char数组，值在内存中，字符串是不能发生改变的，适用于内容不经常发生改变的场合。
当字符串内容经常发生改变时则使用StringBuilder，底层也是一个final类型的char数组，底层有一个默认为16字符的空间，如果字符串内容发生了改变
数组如果不够，底层可以进行动态扩容）




* StringBuilder: 字符串内容可变 char[] value
本质是一个可动态扩容的char[] 适用于字符串内容经常发生改变的场合
非线程安全，适用于单线程

* StingBuffer:


*/
public class StringDemo {
    public static void main(String[] args) {
        String word = "file";
        word = word + "run";
        word = word.toUpperCase();


        /**
         * super(16);
         *
         * AbstractStringBuilder(int capacity) {
         *         char[] value = new char[capacity];
         *    }
         */

        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("hello");    //底层长度为16的数组
        stringBuilder.append("initial");
        stringBuilder.append("qwegdg wewe wsfnhfbv");  //长度不够时底层动态扩容
        String str = stringBuilder.toString();
        System.out.println(str);

        stringBuilder.delete(0,2);
        System.out.println(stringBuilder);
        stringBuilder.insert(3,"aaa");





    }

}
